package com.ssy.lingxi.settle.accounts.model.vo.request;

import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 更新对账单行VO
 * @author Saske
 * @date 2021/12/10
 * @version 2.0.0
 */
public class ReconciliationRowUpdateVo implements Serializable {

    private static final long serialVersionUID = -2740635928081863575L;

    /**
     * （供应商）会员Id
     */
    @NotNull(message = "供应商会员Id要大于0")
    @Positive(message = "供应商会员Id要大于0")
    private Long memberId;

    /**
     * （供应商）会员角色Id
     */
    @NotNull(message = "供应商会员角色Id要大于0")
    @Positive(message = "供应商会员角色Id要大于0")
    private Long roleId;

    /**
     * 对账单号
     */
    @NotNull(message = "对账单号不能为空")
    private String reconciliationNo;

    /**
     * 订单Id
     */
    @NotBlank(message = "请选择需要生成对账单的数据")
    private String orderNo;

    /**
     * 预计结算日期
     */
    @NotNull(message = "结算日期大于0")
    @Positive(message = "结算日期大于0")
    private Long settlementDate;

    /**
     * 发货批次
     */
    @NotBlank(message = "发货批次不能为空")
    private String deliveryBatch;

    /**
     * 发货单号
     */
    @NotBlank(message = "发货单号不能为空")
    private String deliveryId;

    /**
     * 收货单号
     */
    @NotBlank(message = "收货单号不能为空")
    private String receiveId;


    /**
     * 物料编码
     */
    @NotBlank(message = "物料编号不能为空")
    @Size(max = 20, message = "物料编号最长20个字符")
    private String productNo;

    /**
     * 物料名称
     */
    @NotBlank(message = "物料名称不能为空")
    @Size(max = 100, message = "物料名称最长100个字符")
    private String name;

    /**
     * 商品规格
     */
    @Size(max = 255, message = "商品规格最长255个字符")
    private String spec;

    /**
     * 商品品类
     */
    @NotBlank(message = "商品品类不能为空")
    @Size(max = 50, message = "商品品类最长50个字符")
    private String category;

    /**
     * 商品品牌
     */
    @Size(max = 50, message = "商品品牌最长50个字符")
    private String brand;

    /**
     * 单位
     */
    @NotBlank(message = "商品单位不能为空")
    @Size(max = 10, message = "商品单位最长10个字符")
    private String unit;

    /**
     * 税率（百分比的分子部分）
     */
    private BigDecimal taxRate;

    /**
     * 单价（含税）
     */
    @NotNull(message = "单价（含税）要大于等于0")
    @PositiveOrZero(message = "单价（含税）要大于等于0")
    private BigDecimal price;

    /**
     * 待对账数量
     */
    @NotNull(message = "待对账数量要大于等于0")
    @PositiveOrZero(message = "待对账数量要大于等于0")
    private BigDecimal reconciliationQuantity;

    /**
     * 待对账金额（含税）
     */
    @NotNull(message = "待对账金额（含税）要大于等于0")
    @PositiveOrZero(message = "待对账金额（含税）要大于等于0")
    private BigDecimal reconciliationMoneyAmount;

    /**
     * 本次对账数量
     */
    @NotNull(message = "本次对账数量要大于等于0")
    @PositiveOrZero(message = "本次对账数量要大于等于0")
    private BigDecimal currentQuantity;

    /**
     * 本次对账金额（含税）
     */
    @NotNull(message = "本次对账金额（含税）要大于等于0")
    @PositiveOrZero(message = "本次对账金额（含税）要大于等于0")
    private BigDecimal currentMoney;

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public Long getRoleId() {
        return roleId;
    }

    public void setRoleId(Long roleId) {
        this.roleId = roleId;
    }

    public String getReconciliationNo() {
        return reconciliationNo;
    }

    public void setReconciliationNo(String reconciliationNo) {
        this.reconciliationNo = reconciliationNo;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public Long getSettlementDate() {
        return settlementDate;
    }

    public void setSettlementDate(Long settlementDate) {
        this.settlementDate = settlementDate;
    }

    public String getDeliveryBatch() {
        return deliveryBatch;
    }

    public void setDeliveryBatch(String deliveryBatch) {
        this.deliveryBatch = deliveryBatch;
    }

    public String getDeliveryId() {
        return deliveryId;
    }

    public void setDeliveryId(String deliveryId) {
        this.deliveryId = deliveryId;
    }

    public String getReceiveId() {
        return receiveId;
    }

    public void setReceiveId(String receiveId) {
        this.receiveId = receiveId;
    }

    public String getProductNo() {
        return productNo;
    }

    public void setProductNo(String productNo) {
        this.productNo = productNo;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSpec() {
        return spec;
    }

    public void setSpec(String spec) {
        this.spec = spec;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getUnit() {
        return unit;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public BigDecimal getTaxRate() {
        return taxRate;
    }

    public void setTaxRate(BigDecimal taxRate) {
        this.taxRate = taxRate;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public BigDecimal getReconciliationQuantity() {
        return reconciliationQuantity;
    }

    public void setReconciliationQuantity(BigDecimal reconciliationQuantity) {
        this.reconciliationQuantity = reconciliationQuantity;
    }

    public BigDecimal getReconciliationMoneyAmount() {
        return reconciliationMoneyAmount;
    }

    public void setReconciliationMoneyAmount(BigDecimal reconciliationMoneyAmount) {
        this.reconciliationMoneyAmount = reconciliationMoneyAmount;
    }

    public BigDecimal getCurrentQuantity() {
        return currentQuantity;
    }

    public void setCurrentQuantity(BigDecimal currentQuantity) {
        this.currentQuantity = currentQuantity;
    }

    public BigDecimal getCurrentMoney() {
        return currentMoney;
    }

    public void setCurrentMoney(BigDecimal currentMoney) {
        this.currentMoney = currentMoney;
    }
}
